//
// Copyright 2016-2017 Jeff Bush
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#pragma once

#define LOW_CHAR ' '
#define HIGH_CHAR '~'
#define GLYPH_WIDTH 8u
#define GLYPH_HEIGHT 8u

const unsigned char FONT_DATA[] =
{
    // <space> (32)
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // ! (33)
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00000000,
    0b00010000,
    0b00000000,

    // "
    0b00100100,
    0b00100100,
    0b00100100,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // #
    0b00000000,
    0b00101000,
    0b01111100,
    0b00101000,
    0b00101000,
    0b01111100,
    0b00101000,
    0b00000000,

    // $
    0b00010000,
    0b00111100,
    0b01010000,
    0b00111000,
    0b00010100,
    0b01111000,
    0b00010000,
    0b00000000,

    // %
    0b00000100,
    0b11001000,
    0b00010000,
    0b00100000,
    0b01001100,
    0b10000000,
    0b00000000,
    0b00000000,

    // &
    0b01100000,
    0b10010000,
    0b10010000,
    0b01100000,
    0b10010100,
    0b10011000,
    0b01100100,
    0b00000000,

    // '
    0b00010000,
    0b00010000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // (
    0b00001000,
    0b00010000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00010000,
    0b00001000,
    0b00000000,

    // )
    0b00100000,
    0b00010000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00010000,
    0b00100000,
    0b00000000,

    // *
    0b00000000,
    0b01000100,
    0b00101000,
    0b01111100,
    0b00101000,
    0b01000100,
    0b00000000,
    0b00000000,

    // +
    0b00000000,
    0b00010000,
    0b00010000,
    0b11111100,
    0b00010000,
    0b00010000,
    0b00000000,
    0b00000000,

    // ,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00001100,
    0b00011000,

    // -
    0b00000000,
    0b00000000,
    0b00000000,
    0b11111100,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // .
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00011000,
    0b00000000,

    // /
    0b00000010,
    0b00000100,
    0b00001000,
    0b00010000,
    0b00100000,
    0b01000000,
    0b10000000,
    0b00000000,

    // 0
    0b01111000,
    0b10001100,
    0b10010100,
    0b10100100,
    0b11000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // 1
    0b00010000,
    0b00110000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00000000,

    // 2
    0b01111000,
    0b10000100,
    0b00000100,
    0b00011000,
    0b00100000,
    0b01000000,
    0b11111100,
    0b00000000,

    // 3
    0b01111000,
    0b10000100,
    0b00000100,
    0b00011000,
    0b00000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // 4
    0b00001000,
    0b00011000,
    0b00101000,
    0b01001000,
    0b11111100,
    0b00001000,
    0b00001000,
    0b00000000,

    // 5
    0b11111100,
    0b10000000,
    0b10000000,
    0b11111000,
    0b00000100,
    0b00000100,
    0b11111000,
    0b00000000,

    // 6
    0b01111000,
    0b10000100,
    0b10000000,
    0b11111000,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // 7
    0b11111100,
    0b00000100,
    0b00000100,
    0b00001000,
    0b00010000,
    0b00100000,
    0b00100000,
    0b00000000,

    // 8
    0b01111000,
    0b10000100,
    0b10000100,
    0b01111000,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // 9
    0b01111000,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000100,
    0b00000100,
    0b01111000,
    0b00000000,

    // :
    0b00000000,
    0b00000000,
    0b00011000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00011000,
    0b00000000,

    // ;
    0b00000000,
    0b00000000,
    0b00011000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00011000,
    0b00110000,

    // <
    0b00001000,
    0b00010000,
    0b00100000,
    0b01000000,
    0b00100000,
    0b00010000,
    0b00001000,
    0b00000000,

    // =
    0b00000000,
    0b00000000,
    0b11111100,
    0b00000000,
    0b11111100,
    0b00000000,
    0b00000000,
    0b00000000,

    // >
    0b00100000,
    0b00010000,
    0b00001000,
    0b00000100,
    0b00001000,
    0b00010000,
    0b00100000,
    0b00000000,

    // ?
    0b01111000,
    0b10000100,
    0b00000100,
    0b00011000,
    0b00100000,
    0b00000000,
    0b00100000,
    0b00000000,

    // @
    0b01111000,
    0b10000100,
    0b10111100,
    0b10100100,
    0b10111000,
    0b10000000,
    0b01111100,
    0b00000000,

    // A
    0b00110000,
    0b01001000,
    0b10000100,
    0b10000100,
    0b11111100,
    0b10000100,
    0b10000100,
    0b00000000,

    // B
    0b11111000,
    0b10000100,
    0b10000100,
    0b11111000,
    0b10000100,
    0b10000100,
    0b11111000,
    0b00000000,

    // C
    0b01111000,
    0b10000100,
    0b10000000,
    0b10000000,
    0b10000000,
    0b10000100,
    0b01111000,
    0b00000000,

    // D
    0b11111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b11111000,
    0b00000000,

    // E
    0b11111100,
    0b10000000,
    0b10000000,
    0b11111100,
    0b10000000,
    0b10000000,
    0b11111100,
    0b00000000,

    // F
    0b11111100,
    0b10000000,
    0b10000000,
    0b11111000,
    0b10000000,
    0b10000000,
    0b10000000,
    0b00000000,

    // G
    0b01111000,
    0b10000100,
    0b10000000,
    0b10011100,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // H
    0b10000100,
    0b10000100,
    0b10000100,
    0b11111100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b00000000,

    // I
    0b00111000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00111000,
    0b00000000,

    // J
    0b00000100,
    0b00000100,
    0b00000100,
    0b00000100,
    0b00000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // K
    0b10000100,
    0b10001000,
    0b10010000,
    0b11100000,
    0b10010000,
    0b10001000,
    0b10000100,
    0b00000000,

    // L
    0b10000000,
    0b10000000,
    0b10000000,
    0b10000000,
    0b10000000,
    0b10000000,
    0b11111100,
    0b00000000,

    // M
    0b10000100,
    0b11001100,
    0b10110100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b00000000,

    // N
    0b10000100,
    0b11000100,
    0b10100100,
    0b10010100,
    0b10001100,
    0b10000100,
    0b10000100,
    0b00000000,

    // O
    0b01111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // P
    0b11111000,
    0b10000100,
    0b10000100,
    0b11111000,
    0b10000000,
    0b10000000,
    0b10000000,
    0b00000000,

    // Q
    0b01111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000110,

    // R
    0b11111000,
    0b10000100,
    0b10000100,
    0b11111000,
    0b10010000,
    0b10001000,
    0b10000100,
    0b00000000,

    // S
    0b01111000,
    0b10000100,
    0b10000000,
    0b01111000,
    0b00000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // T
    0b11111100,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00000000,

    // U
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // V
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01001000,
    0b00110000,
    0b00000000,

    // W
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10110100,
    0b01001000,
    0b00000000,

    // X
    0b10000100,
    0b10000100,
    0b01001000,
    0b00110000,
    0b01001000,
    0b10000100,
    0b10000100,
    0b00000000,

    // Y
    0b10001000,
    0b10001000,
    0b10001000,
    0b01010000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00000000,

    // Z
    0b11111100,
    0b00001000,
    0b00010000,
    0b00100000,
    0b01000000,
    0b10000000,
    0b11111100,
    0b00000000,

    // [
    0b00111000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00111000,
    0b00000000,

    // backslash
    0b10000000,
    0b01000000,
    0b00100000,
    0b00010000,
    0b00001000,
    0b00000100,
    0b00000000,
    0b00000000,

    // ]
    0b00111000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00111000,
    0b00000000,

    // ^
    0b00010000,
    0b00101000,
    0b01000100,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // _
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b11111100,
    0b00000000,

    // `
    0b01000000,
    0b01000000,
    0b00100000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,

    // a
    0b00000000,
    0b00000000,
    0b01111000,
    0b00000100,
    0b01111100,
    0b10000100,
    0b01111100,
    0b00000000,

    // b
    0b10000000,
    0b10000000,
    0b11111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b11111000,
    0b00000000,

    // c
    0b00000000,
    0b00000000,
    0b01111100,
    0b10000000,
    0b10000000,
    0b10000000,
    0b01111100,
    0b00000000,

    // d
    0b00000100,
    0b00000100,
    0b01111100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000000,

    // e
    0b00000000,
    0b00000000,
    0b01111000,
    0b10000100,
    0b11111100,
    0b10000000,
    0b01111100,
    0b00000000,

    // f
    0b00111000,
    0b01000000,
    0b01000000,
    0b11110000,
    0b01000000,
    0b01000000,
    0b01000000,
    0b00000000,

    // g
    0b00000000,
    0b00000000,
    0b01111000,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000100,
    0b01111000,

    // h
    0b10000000,
    0b10000000,
    0b11111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b00000000,

    // i
    0b00010000,
    0b00000000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00000000,

    // j
    0b00001000,
    0b00000000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b00001000,
    0b01110000,

    // k
    0b10000000,
    0b10000000,
    0b10001000,
    0b10010000,
    0b11100000,
    0b10010000,
    0b10001000,
    0b00000000,

    // l
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00000000,

    // m
    0b00000000,
    0b00000000,
    0b11001100,
    0b10110100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b00000000,

    // n
    0b00000000,
    0b00000000,
    0b11111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b00000000,

    // o
    0b00000000,
    0b00000000,
    0b01111000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // p
    0b00000000,
    0b00000000,
    0b11111000,
    0b10000100,
    0b10000100,
    0b11111000,
    0b10000000,
    0b10000000,

    // q
    0b00000000,
    0b00000000,
    0b01111100,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000100,
    0b00000100,

    // r
    0b00000000,
    0b00000000,
    0b11111000,
    0b10000100,
    0b10000000,
    0b10000000,
    0b10000000,
    0b00000000,

    // s
    0b00000000,
    0b00000000,
    0b01111100,
    0b10000000,
    0b01111000,
    0b00000100,
    0b11111000,
    0b00000000,

    // t
    0b00100000,
    0b00100000,
    0b11111000,
    0b00100000,
    0b00100000,
    0b00100000,
    0b00011100,
    0b00000000,

    // u
    0b00000000,
    0b00000000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111000,
    0b00000000,

    // v
    0b00000000,
    0b00000000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01001000,
    0b00110000,
    0b00000000,

    // w
    0b00000000,
    0b00000000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b10110100,
    0b11001100,
    0b00000000,

    // x
    0b00000000,
    0b00000000,
    0b10000100,
    0b01001000,
    0b00110000,
    0b01001000,
    0b10000100,
    0b00000000,

    // y
    0b00000000,
    0b00000000,
    0b10000100,
    0b10000100,
    0b10000100,
    0b01111100,
    0b00000100,
    0b01111000,

    // z
    0b00000000,
    0b00000000,
    0b11111000,
    0b00010000,
    0b00100000,
    0b01000000,
    0b11111000,
    0b00000000,

    // {
    0b0011100,
    0b01000000,
    0b01000000,
    0b10000000,
    0b01000000,
    0b01000000,
    0b00111000,
    0b00000000,

    // |
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00010000,
    0b00000000,

    // }
    0b01110000,
    0b00001000,
    0b00001000,
    0b00000100,
    0b00001000,
    0b00001000,
    0b01110000,
    0b00000000,

    // ~
    0b00000000,
    0b01000000,
    0b10101000,
    0b00010000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000
};
